package com.cx.factory;

/**
 * @author zhangshuai
 * @version V1.0
 * @Project Java2_26
 * @Package com.cx.factory
 * @Description:
 * @Date 2025/5/27 8:59
 */

public class SimpleFactory {
    //简单工厂模式：定义一个工厂类，根据传入的参数不同，返回不同的对象
    //工厂方法模式：定义一个工厂接口，让工厂子类实现工厂接口，根据不同的实现类，返回不同的对象
    //抽象工厂模式：定义一个工厂接口，让工厂子类实现工厂接口，根据不同的抽象方法，返回不同的对象


    public static Shape createBean(String type) {
        //循环判断，根据不同的类型创建不同的对象
//        if ("Triangle".equals(type)) {
//            return new Triangle();
//        }else if ("Square".equals(type)) {
//            return new Square();
//        }else {
//            return new Other();
//        }
        //使用switch语句，根据不同的类型创建不同的对象
        switch(type){
            case "Triangle":
                return new Triangle();
            case "Square":
                return new Square();
            default:
                return new Other();
        }

    }
    //在spring框架中，使用工厂模式创建对象BeanFactory,使用setter方法或者是构造方法将对象注入到容器中
    public static void main(String[] args) {
        //使用工厂模式创建对象
        Shape triangle = SimpleFactory.createBean("Triangle");
        triangle.draw();
        Shape square = SimpleFactory.createBean("Square");
        square.draw();
        Shape other = SimpleFactory.createBean("Other");
        other.draw();

    }
}
interface Shape {
    /**
     * 绘制图形方法
     *
     */
    void draw();
}

class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制三角形");
    }
}
class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制正方形");
    }
}
class Other implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制其他图形");
    }
}